package com.sg.dto.biz.app.res;

import com.sg.dto.base.app.common.VirtualOrgMemberDeptDto;
import com.sg.dto.base.app.common.VirtualOrgMemberDto;
import com.sg.dto.biz.app.common.*;
import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @desc ImplementEightReceivingFieldRespDto
 * @使用场景
 */
@Data
public class ImplementEightReceivingFieldRespDto
        extends BaseDto
        implements Serializable {

    /**
     * 自定义字段1
     */
    @ApiModelProperty("自定义字段1")
    private String customField1;

    /**
     * 自定义字段2
     */
    @ApiModelProperty("自定义字段2")
    private String customField2;
    /**
     * 是否系统对接 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否系统对接")
    private String isSystemDocking;
    /**
     * 通用数值字段（小数型）
     */
    @ApiModelProperty("通用数值字段（小数型）")
    private Double comFloatField;
    /**
     * OKR树实际值计算公式 SYSTEM_DOCKING:系统对接实际值 MANUAL_REPORT:人工填报实际值 RIGHTWARD_CALCULATION:向左取最近可循环周期最新 RIGHTWARD_CALCULATION_SUM:向左取最近可循环周期求和
     */
    @ApiModelProperty("OKR树实际值计算公式")
    private String okrActualValueCalcFormula;
    /**
     * OKR树目标得分计算公式 CALC:自己计算得分 OKR_DEPT_CLONE_PERSONAL_SCORE:OKR部门克隆个人树得分
     */
    @ApiModelProperty("OKR树目标得分计算公式")
    private String okrTreeTargetScoreFormula;

    /**
     * OKR树目标得分本级与下级组合变量 RANK_CALC:计算本级得分 DOWN_CALC:计算下级得分
     */
    @ApiModelProperty("OKR树目标得分本级与下级组合变量")
    private String okrTreeTargetScoreClassAndSubVariate;

    /**
     * OKR树得分主客观变量 SUBJECTIVE:主观得分 OBJECTIVE:客观得分 SUBJECTIVE_AND_OBJECTIVE:主观得分+客观得分
     */
    @ApiModelProperty("OKR树得分主客观变量")
    private String okrTreeScoreSubAndObjVariable;
    /**
     * 目标得分_本级过程得分权重
     */
    @ApiModelProperty("目标得分_本级过程得分权重")
    private Double actualScoreLocalLevelWeight;

    /**
     * 目标得分_下级目标得分权重
     */
    @ApiModelProperty("目标得分_下级目标得分权重")
    private Double actualScoreLowerLevelWeight;
    /**
     * 其他树进度值
     */
    @ApiModelProperty("其他树进度值")
    private Double otherProgressValue;
    /**
     * 其他树实际值
     */
    @ApiModelProperty("其他树实际值")
    private Double otherActualValue;
    /**
     * 其他树目标得分
     */
    @ApiModelProperty("其他树目标得分")
    private Double otherTargetScore;

    /**
     * 其他树达成度
     */
    @ApiModelProperty("其他树达成度")
    private Double otherReach;
    /**
     * 主树实际值计算公式标识
     */
    @ApiModelProperty("主树实际值计算公式标识")
    private String evaActualCalcCode;

    /**
     * 主树目标得分计算公式标识
     */
    @ApiModelProperty("主树目标得分计算公式标识")
    private String evaReportScoreCalcCode;

    /**
     * 主树目标得分本级或下级变量
     */
    @ApiModelProperty("主树目标得分本级或下级变量")
    private String rankOrDownCalc;

    /**
     * 主树目标得分主客观变量 SUBJECTIVE:主观得分 OBJECTIVE:客观得分 SUBJECTIVE_AND_OBJECTIVE:主观得分+客观得分
     */
    @ApiModelProperty("主树目标得分主客观变量")
    private String subAndObjModel;
    /**
     * 其他树实际值计算公式标识
     */
    @ApiModelProperty("其他树实际值计算公式标识")
    private String otherActualCalcCode;

    /**
     * 其他树目标得分计算公式标识
     */
    @ApiModelProperty("其他树目标得分计算公式标识")
    private String otherReportScoreCalcCode;
    /**
     * 父子中周期类型 PARENT_CYCLE:父周期 MID_CYCLE:中期 SUB_CYCLE:子周期 PROCESS_CYCLE:过程周期
     */
    @ApiModelProperty("父子中周期类型")
    private String parentSubMidCycleType;
    /**
     * 数据是否准备完整 TRUE:是 FALSE:否
     */
    @ApiModelProperty("数据是否准备完整")
    private String dataCompletePreparation;
    @ApiModelProperty("身份人员去重后我下属小圈子列表 ")
    List<String> identityDudepSubordinateChargeSmallCircleList = new ArrayList<>();
    @ApiModelProperty("部门去重后虚拟成员部门列表 ")
    List<String> deptDudepVirtualOrgMemberDeptList = new ArrayList<>();
    @ApiModelProperty("主题内容去重后我相关的主题内容列表 ")
    List<String> themeDudptMyRelateThemeConList = new ArrayList<>();
    @ApiModelProperty("内容表主键列表")
    private List<EntityIdDto> entityIdList = new ArrayList<>();
    @ApiModelProperty("下级目标内容列表")
    private List<SubTargetContentDto> subTargetContentList = new ArrayList<>();
    @ApiModelProperty("虚拟组织成员列表")
    private List<VirtualOrgMemberDto> virtualOrgMemberList = new ArrayList<>();
    /**
     * 通用时间字段
     */
    @ApiModelProperty("通用时间字段")
    private Date comTimeField;
    /**
     * 上一归属周期ID
     */
    @ApiModelProperty("上一归属周期ID")
    private String previousCycleId;

    /**
     * 归属周期ID
     */
    @ApiModelProperty("归属周期ID")
    private String cycleId;

    /**
     * 周期开始时间
     */
    @ApiModelProperty("周期开始时间")
    private Date cycleStartTime;

    /**
     * 周期结束时间
     */
    @ApiModelProperty("周期结束时间")
    private Date cycleEndTime;

    /**
     * 周期类型标识
     */
    @ApiModelProperty("周期类型标识")
    private String cycleTypeCode;

    /**
     * 周期类型实例标识
     */
    @ApiModelProperty("周期类型实例标识")
    private String cycleTypeInstanceCode;

    /**
     * 更新周期ID
     */
    @ApiModelProperty("更新周期ID")
    private String updateCycleId;

    /**
     * 更新周期开始时间
     */
    @ApiModelProperty("更新周期开始时间")
    private Date updateCycleStartTime;

    /**
     * 更新周期结束时间
     */
    @ApiModelProperty("更新周期结束时间")
    private Date updateCycleEndTime;

    /**
     * 更新周期类型标识
     */
    @ApiModelProperty("更新周期类型标识")
    private String updateCycleTypeCode;
    /**
     * 是否是平台 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否是平台")
    private String platformData;

    /**
     * 创建于空间ID
     */
    @ApiModelProperty("创建于空间ID")
    private String spaceId;
    @ApiModelProperty("目标内容列表 ")
    List<String> targetContentList = new ArrayList<>();

    @ApiModelProperty("指标列表 ")
    List<String> targetObjList = new ArrayList<>();
    /**
     * 周期ID
     */
    @ApiModelProperty("周期ID")
    private String periodId;
    /**
     * 其他树进度参照值
     */
    @ApiModelProperty("其他树进度参照值")
    private Double otherRefProgressValue;

    /**
     * 其他树实际参照值
     */
    @ApiModelProperty("其他树实际参照值")
    private Double otherRefActualValue;

    /**
     * 上级目标归属周期ID
     */
    @ApiModelProperty("上级目标归属周期ID")
    private String supTargetAttributionCycleId;

    @ApiModelProperty("我下属小圈子列表")
    private List<SubordinateChargeSmallCircleDto> subordinateChargeSmallCircleList = new ArrayList<>();

    @ApiModelProperty("虚拟成员部门列表")
    private List<VirtualOrgMemberDeptDto> virtualOrgMemberDeptList = new ArrayList<>();

    @ApiModelProperty("我相关的评价模板列表 ")
    List<String> myRelateEvalutionList = new ArrayList<>();

    @ApiModelProperty("评价模板去重后我相关的评价模板列表 ")
    List<String> evaDudepMyRelateEvalutionList = new ArrayList<>();

    @ApiModelProperty("我相关的主题内容列表 ")
    List<String> myRelateThemeConList = new ArrayList<>();

    /**
     * 归属内容表主键ID
     */
    @ApiModelProperty("归属内容表主键ID")
    private String entityId;

    @ApiModelProperty("部门列表 ")
    List<String> deptList = new ArrayList<>();

    @ApiModelProperty("周期列表")
    private List<CycleDto> cycleList = new ArrayList<>();
    /**
     * 统计数
     */
    @ApiModelProperty("统计数")
    private Long calcCount;

    @ApiModelProperty("对接成果关系列表")
    private List<AchievementDockingDto> achievementDockingList = new ArrayList<>();
    /**
     * 被评对象目标周期ID
     */
    @ApiModelProperty("被评对象目标周期ID")
    private String evaObjTargetCycleId;
    /**
     * 是否末级周期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否末级周期")
    private String isLastCycle;
    @ApiModelProperty("成果列表 ")
    List<String> achievementList = new ArrayList<>();
    /**
     * 是否父周期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否父周期")
    private String isParentCycle;

    /**
     * 是否中期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否中期")
    private String isMetaphase;

    /**
     * 是否子周期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否子周期")
    private String isSubCycle;
    /**
     * 业绩责任部门ID
     */
    @ApiModelProperty("业绩责任部门ID")
    private String dutyDeptId;
    /**
     * 版权归属对象ID
     */
    @ApiModelProperty("版权归属对象ID")
    private String copyrightObjectId;
    /**
     * 自定义字段3
     */
    @ApiModelProperty("自定义字段3")
    private String customField3;
    /**
     * 看板名称
     */
    @ApiModelProperty("看板名称")
    private String spectacularName;

    /**
     * 周期名称
     */
    @ApiModelProperty("周期名称")
    private String cycleStandardName;
    /**
     * 是否过程周期阶段 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否过程周期阶段")
    private String isProcessCycleStage;
    @ApiModelProperty("被评对象目标周期列表")
    private List<EvaObjTargetCycleDto> evaObjTargetCycleList = new ArrayList<>();
    /**
     * 是否工作周期数据 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否工作周期数据")
    private String isWorkCycleData;
    /**
     * 子周期计算模型ID
     */
    @ApiModelProperty("子周期计算模型ID")
    private String subCycleCalcModelId;
    /**
     * 中期计算模型ID
     */
    @ApiModelProperty("中期计算模型ID")
    private String midCycleCalcModelId;
    /**
     * 父周期计算模型ID
     */
    @ApiModelProperty("父周期计算模型ID")
    private String parentCycleCalcModelId;
    /**
     * 执行周期阶段的内容ID
     */
    @ApiModelProperty("执行周期阶段的内容ID")
    private String executeCycleTargetContentId;
    /**
     * 周期模式类型编码 FATHER_SON_CYCLE:父子周期 SINGLE_CYCLE:单周期 IRREGULAR_CYCLE:不规则周期
     */
    @ApiModelProperty("周期模式类型编码")
    private String periodicModeTypeCode;

    /**
     * 主客观得分单位
     */
    @ApiModelProperty("主客观得分单位")
    private String subjectiveScoreUnit;

    /**
     * 账户单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:1111百分率 PORTION:份 %:%
     */
    @ApiModelProperty("账户单位")
    private String accountUnit;
    /**
     * 进度值（数值）
     */
    @ApiModelProperty("进度值（数值）")
    private Double progressValue;
    /**
     * 客观得分
     */
    @ApiModelProperty("客观得分")
    private Double objectiveScore;
    /**
     * 自定义字段4
     */
    @ApiModelProperty("自定义字段4")
    private String customField4;
    /**
     * 父周期类型 PARENT_CYCLE:父周期 MID_CYCLE:中期 SUB_CYCLE:子周期 PROCESS_CYCLE:过程周期
     */
    @ApiModelProperty("父周期类型")
    private String parentCycleType;

    /**
     * 中周期类型 PARENT_CYCLE:父周期 MID_CYCLE:中期 SUB_CYCLE:子周期 PROCESS_CYCLE:过程周期
     */
    @ApiModelProperty("中周期类型")
    private String midCycleType;

    /**
     * 子周期类型 PARENT_CYCLE:父周期 MID_CYCLE:中期 SUB_CYCLE:子周期 PROCESS_CYCLE:过程周期
     */
    @ApiModelProperty("子周期类型")
    private String subCycleType;

    /**
     * 过程周期类型 PARENT_CYCLE:父周期 MID_CYCLE:中期 SUB_CYCLE:子周期 PROCESS_CYCLE:过程周期
     */
    @ApiModelProperty("过程周期类型")
    private String processCycleType;
    /**
     * 通用数值字段（整数型）
     */
    @ApiModelProperty("通用数值字段（整数型）")
    private Long comNumField;
    /**
     * 是否实际验收周期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否实际验收周期")
    private String isActualReceptionCycle;
    /**
     * 是否计划验收周期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否计划验收周期")
    private String isPlanReceptionCycle;
    /**
     * 过程中间周期计算模型ID
     */
    @ApiModelProperty("过程中间周期计算模型ID")
    private String processCycleCalcModelId;

    /**
     * 关联目标内容ID
     */
    @ApiModelProperty("关联目标内容ID")
    private String targetCycleContentId;

    /**
     * 冗余目标ID
     */
    @ApiModelProperty("冗余目标ID")
    private String targetId;

    /**
     * 周期类型实例简称
     */
    @ApiModelProperty("周期类型实例简称")
    private String cycleNumberShortName;

    /**
     * 周期排序
     */
    @ApiModelProperty("周期排序")
    private Long orderNumber;

    /**
     * 主观评分单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:1111百分率 PORTION:份 %:%
     */
    @ApiModelProperty("主观评分单位")
    private String subjectiveMarkUnit;
    @ApiModelProperty("身份人员小圈子列表 ")
    List<String> originalRoleMemberInfoCicleList = new ArrayList<>();
    /**
     * 上一更新周期ID
     */
    @ApiModelProperty("上一更新周期ID")
    private String preUpdateCycleId;
    /**
     * 归属评价画像子周期根节点ID
     */
    @ApiModelProperty("归属评价画像子周期根节点ID")
    private String evaPortraitTargetSubCycleId;
    /**
     * 成果所属主体类型编码 DEPT_TARGET_ROOT:部门目标任务书根节点 PERFORMANCE_EVA_SUBJECT_ROOT:绩效评价对象根节点
     */
    @ApiModelProperty("成果所属主体类型编码")
    private String achievementBelongBodyTypeCode;

    /**
     * 成果所属主体ID
     */
    @ApiModelProperty("成果所属主体ID")
    private String achievementBelongBodyId;
    /**
     * 目标大屏更新周期周期类型
     */
    @ApiModelProperty("目标大屏更新周期周期类型")
    private String targetUpdateCycleTypeCode;
    /**
     * 是否有过程周期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否有过程周期")
    private String isHaveProcessCycle;
    @ApiModelProperty("文案列表")
    private List<CopywritingDto> copywritingList = new ArrayList<>();
    /**
     * 是否开启mini版标志性成果
     */
    @ApiModelProperty("是否开启mini版标志性成果")
    private String isOpenMiniAchiment;

    /**
     * 标志性成果展示类型 DISPLAY_TWO_TARGET_CATE:二级目标分类 DISPLAY_ONE_OBJECTIVE:一级指标
     */
    @ApiModelProperty("标志性成果展示类型")
    private String achievementsDisplayedType;
    /**
     * 完成率算法类型 LOW_TARGET_CONTENT_STATIC:统计向下目标内容 ROOT_OBJECTIVE_STATIC:统计一级指标 LAST_OBJECTIVE_STATIC:统计末级指标
     */
    @ApiModelProperty("完成率算法类型")
    private String completionRateAlgorithmType;
    /**
     * 成果汇报进度录入方式
     */
    @ApiModelProperty("成果汇报进度录入方式")
    private String reportProgressEnterMethod;
    /**
     * 标志性成果大屏展示版本 ACHIVE_MINI_VERSION:标志性成果mini版 ACHIVE_BASIC_VERSION:标志性成果基础版 ACHIVE_ADVANCED_VERSION:标志性成果高级版
     */
    @ApiModelProperty("标志性成果大屏展示版本")
    private String milestoneAchievementsDisplayVersion;

    /**
     * 标志性成果内容展示类型 DISPLAY_ONE_TARGET_CATE:一级目标分类 DISPLAY_CATE_TREE:目标分类树
     */
    @ApiModelProperty("标志性成果内容展示类型")
    private String achievementsConDisplayedType;
    /**
     * 是否开启主管人工审核 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否开启主管人工审核")
    private String isOpenAudit;

    /**
     * 是否开启主观评价 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否开启主观评价")
    private String isSubjectiveScoring;
    /**
     * 是否开启预算 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否开启预算")
    private String isOpenBudget;


    /**
     * 目标周期ID
     */
    @ApiModelProperty("目标周期ID")
    private String targetCycleId;
    /**
     * 问题数据类型 QUASI_PROBLEM_DATA:准问题数据 PROBLEM_DATA:问题数据 NORMAL_DATA:正常数据
     */
    @ApiModelProperty("问题数据类型")
    private String questionDataTypeCode;

    /**
     * 是否历史问题数据 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否历史问题数据")
    private String isHistoryProblemData;
    /**
     * 自定义字段5
     */
    @ApiModelProperty("自定义字段5")
    private String customField5;

    /**
     * 自定义字段6
     */
    @ApiModelProperty("自定义字段6")
    private String customField6;
    /**
     * 问题发起人身份人员ID
     */
    @ApiModelProperty("问题发起人身份人员ID")
    private String problemDataOriginalRoleMemberId;
    /**
     * 自定义字段7
     */
    @ApiModelProperty("自定义字段7")
    private String customField7;
    /**
     * 是否开启资金使用率图表 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否开启资金使用率图表")
    private String isOpenCapitalUtilizationRate;
    @ApiModelProperty("任务分类主题列表")
    private List<TaskCategoriesThemeDto> taskCategoriesThemeList = new ArrayList<>();
    /**
     * 部门汇报任务数算法类型
     */
    @ApiModelProperty("部门汇报任务数算法类型")
    private String deptReportTaskAlgorithmType;
    /**
     * 是否末级指标 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否末级指标")
    private String isLastObjective;
    /**
     * 实际值（数值）
     */
    @ApiModelProperty("实际值（数值）")
    private Double actualValue;
    /**
     * 冗余评价模板ID
     */
    @ApiModelProperty("冗余评价模板ID")
    private String evaluationTemplateId;
    /**
     * 最近可循环最新周期ID
     */
    @ApiModelProperty("最近可循环最新周期ID")
    private String recentlyNewCycleId;
    /**
     * 高层导出规划数据开关
     */
    @ApiModelProperty("高层导出规划数据开关")
    private String highPlanningDataExport;

    /**
     * 高层导出汇报数据开关
     */
    @ApiModelProperty("高层导出汇报数据开关")
    private String highReportDataExport;
    /**
     * 指标展示与导出数据层级
     */
    @ApiModelProperty("指标展示与导出数据层级")
    private String objectiveDisplayAndExportData;
    /**
     * 预算金额展示类型 DISPLAY_ONE_TARGET_CATE:一级目标分类 DISPLAY_CATE_TREE:目标分类树
     */
    @ApiModelProperty("预算金额展示类型")
    private String budgetDisplayType;
    /**
     * 预算大屏展示版本 BUDGET_MINI_VERSION:预算mini版 BUDGET_BASIC_VERSION:预算基础版 BUDGET_ADVANCED_VERSION:预算高级版
     */
    @ApiModelProperty("预算大屏展示版本")
    private String budgetDisplayVersion;

}
